const path = require('path')
const { fileUploadError, unSupportedFileType, publishGoodsError, invalidGoodsID, invalidGoodsInfo } = require('../constant/err.type')
const { createGoods, updateGoods, removeGoods, restoreGoods, fingGoods } = require('../service/goods.service')
class GoodContraller {
    // 上传物品图片
    async upload(ctx, next) {
        const { file } = ctx.request.files
        const fileTypes = ['image/jpeg', 'image/png']
        if (file) {
            if (!fileTypes.includes(file.type)) {
                return ctx.app.emit('error', unSupportedFileType, ctx)
            }
            ctx.body = {
                code: 0,
                message: '商品图片上传成功',
                result: {
                    good_img: path.basename(file.path)
                }
            }
        } else {
            return ctx.app.emit('error', fileUploadError, ctx)
        }

    }
    async create(ctx, next) {
        try {
            const { createAt, updatedAt, ...res } = await createGoods(ctx.request.body)

            ctx.body = {
                code: 0,
                message: '发布商品成功',
                result: res,
            }
        } catch (error) {
            console.error(err)
            return ctx.app.emit('error', publishGoodsError, ctx)
        }
    }
    async update(ctx) {
        try {

            const res = await updateGoods(ctx.params.id, ctx.request.body)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: '修改商品信息成功！',
                    result: '',
                }
            } else {
                return ctx.app.emit('error', invalidGoodsID, ctx)
            }
        } catch (err) {
            console.error(err)
        }

    }
    async remove1(ctx) {
        try {
            const res = await removeGoods(ctx.params.id)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: '商品下架成功！',
                    result: ''
                }
            } else {
                ctx.app.emit('error', invalidGoodsID, ctx)
            }
        } catch (err) {
            console.error(err)
        }
    }
    async renew(ctx) {
        try {
            const res = await restoreGoods(ctx.params.id)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: '商品恢复上架成功！',
                    result: ''
                }
            } else {
                ctx.app.emit('error', invalidGoodsID, ctx)
            }
        } catch (err) {
            console.error(err)
        }
    }

    async findAllgoods(ctx) {
        try {
            const { pageNum = 1, pageSize = 10 } = ctx.request.query

            const res = await fingGoods(pageNum, pageSize)
            if (res) {
                ctx.body = {
                    code: 0,
                    message: '获取商品列表成功',
                    result: res,
                }

            } else {
                ctx.app.emit('error', invalidGoodsInfo, ctx)
            }

        } catch (err) {
            console.error(err)
        }

    }
}
module.exports = new GoodContraller()